package com.lgj.tlias.filter;


import com.alibaba.fastjson.JSONObject;
import com.lgj.tlias.domain.pojo.Result;
import com.lgj.tlias.utils.JwtUtils;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

import java.io.IOException;
@Slf4j
//@WebFilter("/*")
public class fiterLogin implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//        //重点要转换
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
//        //1.获取url
//        String url = request.getRequestURL().toString(); //转成字符串
//        log.info("访问url：{}", url);  //请求路径：http://localhost:8080/login
//        //2.如果含login，是登录操作，放行
//        if (url.contains("/login")) {
//            filterChain.doFilter(servletRequest, servletResponse);   //放行
//            return;
//        }
//        //3.获取令牌(令牌会跟随在请求头里名字为token)
//        String token = request.getHeader("token");
//        //3.1 token 不存在
//        if (!StringUtils.hasLength(token)) {
//            log.info("token不存在");
//            //把Result转换为json字符串返回（使用阿里巴巴的fastjson）
//            Result responseResult = Result.error(0, "NOT_LOGIN");
//            String json = JSONObject.toJSONString(responseResult);
//            //设置响应格式（防止乱码）
//            response.setContentType("application/json;charset=utf-8");
//            //响应
//            response.getWriter().write(json);
//            return;
//        }
//        //3.2 token 无效
//        try {
//            JwtUtils.parseJWT(token);
//        } catch (Exception e) {
//            log.info("令牌解析失败！");
//            //把Result转换为json字符串返回（使用阿里巴巴的fastjson）
//            Result responseResult = Result.error(0, "NOT_LOGIN");
//            String json = JSONObject.toJSONString(responseResult);
//            //设置响应格式（防止乱码）
//            response.setContentType("application/json;charset=utf-8");
//            //响应
//            response.getWriter().write(json);
//            return;
//        }
//        //4.放行
        filterChain.doFilter(request,response);
    }
}